#ifndef COMB_PRIORS_HPP__
#define COMB_PRIORS_HPP__

#include <iostream>
#include <fstream>

extern double haploid_priors_none[4][4];
extern double haploid_priors_high[4][4];
extern double haploid_priors_moderate[4][4];

extern double diploid_priors_none[4][4];
extern double diploid_priors_moderate[4][4];
extern double diploid_priors_high[4][4];

/** Populate the priors array with values from a stream.
 * The priors matrix is ordered A,C,G,T.  The values read from disk are read in standard row/column order.  16 values need to be provided in the order A->A, A->C, ..., T->G, T->T.
 *
 * \param in stream to read
 * \param priors priors to be filled in.
 */
void load_haploid_priors_from_file(std::istream &in, double priors[4][4]);
/** Populate the priors array with values from a stream.
 * The priors matrix is ordered A,C,G,T.  The values read from disk are read in standard row/column order.  16 values need to be provided in the order A->A, A->C, ..., T->G, T->T.
 *
 * \param in stream to read
 * \param priors priors to be filled in.
 */
void load_diploid_priors_from_file(std::istream &in, double priors[4][4]);

/** Load the priors using the standard builtin prior values.
 * \param builtin the array to copy
 * \param the priors to populate.
 */
void load_haploid_priors_builtin(double builtin[4][4],  double priors[4][4]);

/** Load the priors using the standard builtin prior values.
 * \param builtin the array to copy
 * \param the priors to populate.
 */
void load_diploid_priors_builtin(double builtin[4][4], double priors[4][4]);

#endif
